﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Estrutura;


namespace Banco
{

    /// <summary>
    /// Summary description for BD_Endereco
    /// </summary>
    public class BD_Endereco
    {
        #region variaveis_globais

        acessaDB.conectaDBMSSQLServer sqlServer = new conectaDBMSSQLServer();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Endereco()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
        }
        public BD_Endereco(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public System.Data.DataSet _retorna_Endereco(
                                                string ENDERECO_ID,
                                                string ALUNO_ID,
                                                string RESPONSAVEL_ID,
                                                string ENDERECO_TIPO_ID,
                                                string END_LOGRADOURO,
                                                string END_NUMERO,
                                                string END_COMPLEMENTO,
                                                string END_BAIRRO,
                                                string END_CIDADE,
                                                string END_CEP,
                                                string END_UF
                                                )
        {

            if (string.IsNullOrEmpty(ENDERECO_ID)) ENDERECO_ID = "''";
            if (string.IsNullOrEmpty(ALUNO_ID)) ALUNO_ID = "''";
            if (string.IsNullOrEmpty(RESPONSAVEL_ID)) RESPONSAVEL_ID = "''";
            if (string.IsNullOrEmpty(ENDERECO_TIPO_ID)) ENDERECO_TIPO_ID = "''";
            if (string.IsNullOrEmpty(END_LOGRADOURO)) END_LOGRADOURO = "''";
            if (string.IsNullOrEmpty(END_NUMERO)) END_NUMERO = "''";
            if (string.IsNullOrEmpty(END_COMPLEMENTO)) END_COMPLEMENTO = "''";
            if (string.IsNullOrEmpty(END_BAIRRO)) END_BAIRRO = "''";
            if (string.IsNullOrEmpty(END_CIDADE)) END_CIDADE = "''";
            if (string.IsNullOrEmpty(END_CEP)) END_CEP = "''";
            if (string.IsNullOrEmpty(END_UF)) END_UF = "''";

            string sql = "SELECT " +
                                  "ENDERECO.ENDERECO_ID, " +
                                  "ENDERECO.ALUNO_ID, " +                                  
                                  "ENDERECO.ENDERECO_TIPO_ID, " +
                                  "ENDERECO.END_LOGRADOURO, " +
                                  "ENDERECO.END_NUMERO, " +
                                  "ENDERECO.END_COMPLEMENTO, " +
                                  "ENDERECO.END_BAIRRO, " +
                                  "ENDERECO.END_CIDADE, " +
                                  "ENDERECO.END_CEP, " +
                                  "ENDERECO.END_UF " +
                            "FROM ENDERECO " +                            
                            "LEFT JOIN ALUNO ON ALUNO.ALUNO_ID = ENDERECO.ALUNO_ID " +
                            "WHERE " +
                            "      (ENDERECO.ENDERECO_ID = " + ENDERECO_ID + "  OR " + ENDERECO_ID + " = '') AND " +
                            "      (ENDERECO.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = '') AND " +                            
                            "      (ENDERECO.ENDERECO_TIPO_ID = " + ENDERECO_TIPO_ID + "  OR " + ENDERECO_TIPO_ID + " = '') AND " +
                            "      (ENDERECO.END_LOGRADOURO = " + END_LOGRADOURO + "  OR " + END_LOGRADOURO + " = '') AND " +
                            "      (ENDERECO.END_NUMERO = " + END_NUMERO + "  OR " + END_NUMERO + " = '') AND " +
                            "      (ENDERECO.END_COMPLEMENTO = " + END_COMPLEMENTO + "  OR " + END_COMPLEMENTO + " = '') AND " +
                            "      (ENDERECO.END_BAIRRO = " + END_BAIRRO + "  OR " + END_BAIRRO + " = '') AND " +
                            "      (ENDERECO.END_CIDADE = " + END_CIDADE + "  OR " + END_CIDADE + " = '') AND " +
                            "      (ENDERECO.END_CEP = " + END_CEP + "  OR " + END_CEP + " = '') AND " +
                            "      (ENDERECO.END_UF = " + END_UF + "  OR " + END_UF + " = '') ";

            return sqlServer.retornaDataSet(sql, conectionString);;
            

        }


        public List<ES_Endereco> _obter_Endereco(
                                                string ENDERECO_ID,
                                                string ALUNO_ID,
                                                string RESPONSAVEL_ID,
                                                string ENDERECO_TIPO_ID,
                                                string END_LOGRADOURO,
                                                string END_NUMERO,
                                                string END_COMPLEMENTO,
                                                string END_BAIRRO,
                                                string END_CIDADE,
                                                string END_CEP,
                                                string END_UF
                                                )
        {
            //Validar Inserção de Aluno
            if (ALUNO_ID == "NEW")
                return new List<ES_Endereco>();
            
            if (string.IsNullOrEmpty(ENDERECO_ID)) ENDERECO_ID = "0";
            if (string.IsNullOrEmpty(ALUNO_ID)) ALUNO_ID = "0"; 
            if (string.IsNullOrEmpty(RESPONSAVEL_ID)) RESPONSAVEL_ID = "0"; 
            if (string.IsNullOrEmpty(ENDERECO_TIPO_ID)) ENDERECO_TIPO_ID = "0";
            if (string.IsNullOrEmpty(END_LOGRADOURO)) END_LOGRADOURO = "''"; else END_LOGRADOURO = Util.retonarAspas(END_LOGRADOURO + " % ");
            if (string.IsNullOrEmpty(END_NUMERO)) END_NUMERO = "0"; 
            if (string.IsNullOrEmpty(END_COMPLEMENTO)) END_COMPLEMENTO = "''"; else END_COMPLEMENTO = Util.retonarAspas(END_COMPLEMENTO + " % ");
            if (string.IsNullOrEmpty(END_BAIRRO)) END_BAIRRO = "''"; else END_BAIRRO = Util.retonarAspas(END_BAIRRO + " % ");
            if (string.IsNullOrEmpty(END_CIDADE)) END_CIDADE = "''"; else END_CIDADE = Util.retonarAspas(END_CIDADE + " % ");
            if (string.IsNullOrEmpty(END_CEP)) END_CEP = "''"; else END_CEP = Util.retonarAspas(END_CEP + " % ");
            if (string.IsNullOrEmpty(END_UF)) END_UF = "''"; else END_UF = Util.retonarAspas(END_UF + " % ");

            string sql = "SELECT " +
                                  "ENDERECO.ENDERECO_ID, " +
                                  "ENDERECO.ALUNO_ID, " +
                                  
                                  "ENDERECO.ENDERECO_TIPO_ID, " +
                                  "ENDERECO_TIPO.EDT_DESCRICAO, "+
                                  "ENDERECO.END_LOGRADOURO, " +
                                  "ENDERECO.END_NUMERO, " +
                                  "ENDERECO.END_COMPLEMENTO, " +
                                  "ENDERECO.END_BAIRRO, " +
                                  "ENDERECO.END_CIDADE, " +
                                  "ENDERECO.END_CEP, " +
                                  "ENDERECO.END_UF, " +
                                  "ISNULL(ENDERECO.END_STEXCLUIDO, 0)END_STEXCLUIDO " +
                            "FROM ENDERECO " +                            
                            "LEFT JOIN ALUNO ON ALUNO.ALUNO_ID = ENDERECO.ALUNO_ID " +
                            "LEFT JOIN ENDERECO_TIPO ON ENDERECO_TIPO.ENDERECO_TIPO_ID = ENDERECO.ENDERECO_TIPO_ID "+
                            "WHERE " +
                            "      (ENDERECO.ENDERECO_ID = " + ENDERECO_ID + "  OR " + ENDERECO_ID + " = 0) AND " +
                            "      (ENDERECO.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = 0) AND " +                            
                            "      (ENDERECO.ENDERECO_TIPO_ID = " + ENDERECO_TIPO_ID + "  OR " + ENDERECO_TIPO_ID + " = 0) AND " +
                            "      (ENDERECO.END_LOGRADOURO = " + END_LOGRADOURO + "  OR " + END_LOGRADOURO + " = '') AND " +
                            "      (ENDERECO.END_NUMERO = " + END_NUMERO + "  OR " + END_NUMERO + " = 0) AND " +
                            "      (ENDERECO.END_COMPLEMENTO = " + END_COMPLEMENTO + "  OR " + END_COMPLEMENTO + " = '') AND " +
                            "      (ENDERECO.END_BAIRRO = " + END_BAIRRO + "  OR " + END_BAIRRO + " = '') AND " +
                            "      (ENDERECO.END_CIDADE = " + END_CIDADE + "  OR " + END_CIDADE + " = '') AND " +
                            "      (ENDERECO.END_CEP = " + END_CEP + "  OR " + END_CEP + " = '') AND " +
                            "      (ENDERECO.END_UF = " + END_UF + "  OR " + END_UF + " = '') ";

            List<ES_Endereco> lista = new List<ES_Endereco>();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Endereco item = new ES_Endereco();
                    item.ENDERECO_ID = dr["ENDERECO_ID"].ToString();
                    item.ALUNO_ID = dr["ALUNO_ID"].ToString();                    
                    item.ENDERECO_TIPO_ID = dr["ENDERECO_TIPO_ID"].ToString();
                    item.END_LOGRADOURO = dr["END_LOGRADOURO"].ToString();
                    item.END_NUMERO = dr["END_NUMERO"].ToString();
                    item.END_COMPLEMENTO = dr["END_COMPLEMENTO"].ToString();
                    item.END_BAIRRO = dr["END_BAIRRO"].ToString();
                    item.END_CIDADE = dr["END_CIDADE"].ToString();
                    item.END_CEP = dr["END_CEP"].ToString();
                    item.END_UF = dr["END_UF"].ToString();
                    item.END_STEXCLUIDO = (dr["END_STEXCLUIDO"].ToString() == "0") ? false : true;
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public ES_Endereco _obter_Endereco_by_id(string ENDERECO_ID,
                                                 string ALUNO_ID = "0",
                                                 string END_CEP = "0")
        {

            if (string.IsNullOrEmpty(ENDERECO_ID)) ENDERECO_ID = "0";

            string sql = "SELECT " +
                                  "ENDERECO.ENDERECO_ID, " +
                                  "ENDERECO.ALUNO_ID, " +                                  
                                  "ENDERECO.ENDERECO_TIPO_ID, " +
                                  "ENDERECO_TIPO.EDT_DESCRICAO, " +
                                  "ENDERECO.END_LOGRADOURO, " +
                                  "ENDERECO.END_NUMERO, " +
                                  "ENDERECO.END_COMPLEMENTO, " +
                                  "ENDERECO.END_BAIRRO, " +
                                  "ENDERECO.END_CIDADE, " +
                                  "ENDERECO.END_CEP, " +
                                  "ENDERECO.END_UF, " +
                                  "ISNULL(ENDERECO.END_STEXCLUIDO, 0)END_STEXCLUIDO " +
                            "FROM ENDERECO " +
                            
                            "LEFT JOIN ALUNO ON ALUNO.ALUNO_ID = ENDERECO.ALUNO_ID " +
                            "LEFT JOIN ENDERECO_TIPO ON ENDERECO_TIPO.ENDERECO_TIPO_ID = ENDERECO.ENDERECO_TIPO_ID " +
                            "WHERE " +
                            "      (ENDERECO.ENDERECO_ID = " + ENDERECO_ID + "  OR " + ENDERECO_ID + " = 0) AND "+
                            "      (ENDERECO.ALUNO_ID = " + ALUNO_ID + "  OR " + ALUNO_ID + " = 0) AND " +
                            "      (ENDERECO.END_CEP = " + END_CEP + "  OR " + END_CEP + " = 0) ";

            ES_Endereco item = new ES_Endereco();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    item.ENDERECO_ID = dr["ENDERECO_ID"].ToString();
                    item.ALUNO_ID = dr["ALUNO_ID"].ToString();
                    
                    item.ENDERECO_TIPO_ID = dr["ENDERECO_TIPO_ID"].ToString();
                    item.END_LOGRADOURO = dr["END_LOGRADOURO"].ToString();
                    item.END_NUMERO = dr["END_NUMERO"].ToString();
                    item.END_COMPLEMENTO = dr["END_COMPLEMENTO"].ToString();
                    item.END_BAIRRO = dr["END_BAIRRO"].ToString();
                    item.END_CIDADE = dr["END_CIDADE"].ToString();
                    item.END_CEP = dr["END_CEP"].ToString();
                    item.END_UF = dr["END_UF"].ToString();
                    item.END_STEXCLUIDO = (dr["END_STEXCLUIDO"].ToString() == "0") ? false : true;
                }
                return item;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public void _inserir_Endereco(                                                
                                                string ALUNO_ID,
                                                string ENDERECO_TIPO_ID,
                                                string END_LOGRADOURO,
                                                string END_NUMERO,
                                                string END_COMPLEMENTO,
                                                string END_BAIRRO,
                                                string END_CIDADE,
                                                string END_CEP,
                                                string END_UF,
                                                string RESPONSAVEL_ID,
                                                bool END_STEXCLUIDO
                                                )
        {

            string sql = " INSERT INTO ENDERECO " +
                         "      ( " +
                         "          ALUNO_ID, " +
                         "          RESPONSAVEL_ID, " +
                         "          ENDERECO_TIPO_ID, " +
                         "          END_LOGRADOURO, " +
                         "          END_NUMERO, " +
                         "          END_COMPLEMENTO, " +
                         "          END_BAIRRO, " +
                         "          END_CIDADE, " +
                         "          END_CEP, " +
                         "          END_UF,  " +
                         "          END_STEXCLUIDO "+
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              ALUNO_ID + ", " +
                              Util.retonarNull(RESPONSAVEL_ID) + ", " +
                              Util.retonarNull(ENDERECO_TIPO_ID) + ", " +
                              Util.retonarAspas(END_LOGRADOURO, true) + ", " +
                              Util.retonarNull(END_NUMERO) + ", " +
                              Util.retonarAspas(END_COMPLEMENTO, true) + ", " +
                              Util.retonarAspas(END_BAIRRO, true) + ", " +
                              Util.retonarAspas(END_CIDADE, true) + ", " +
                              Util.retonarAspas(END_CEP, true) + ", " +
                              Util.retonarAspas(END_UF, true) + ", "+
                              ((END_STEXCLUIDO == true) ? "1" : "0") +
                 "      )";
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Endereco(
                                                string ENDERECO_ID, 
                                                string ALUNO_ID, 
                                                string ENDERECO_TIPO_ID, 
                                                string END_LOGRADOURO, 
                                                string END_NUMERO, 
                                                string END_COMPLEMENTO, 
                                                string END_BAIRRO, 
                                                string END_CIDADE, 
                                                string END_CEP, 
                                                string END_UF,
                                                string RESPONSAVEL_ID,
                                                bool END_STEXCLUIDO
                                                )
        {

            string sql = " UPDATE ENDERECO SET " +
                         "      ALUNO_ID = " + Util.retonarAspas(ALUNO_ID, true) + ", " +
                         "      RESPONSAVEL_ID = " + Util.retonarAspas(RESPONSAVEL_ID, true) + ", " +
                         "      ENDERECO_TIPO_ID = " + Util.retonarAspas(ENDERECO_TIPO_ID, true) + ", " +
                         "      END_LOGRADOURO = " + Util.retonarAspas(END_LOGRADOURO, true) + ", " +
                         "      END_NUMERO = " + Util.retonarAspas(END_NUMERO, true) + ", " +
                         "      END_COMPLEMENTO = " + Util.retonarAspas(END_COMPLEMENTO, true) + ", " +
                         "      END_BAIRRO = " + Util.retonarAspas(END_BAIRRO, true) + ", " +
                         "      END_CIDADE = " + Util.retonarAspas(END_CIDADE, true) + ", " +
                         "      END_CEP = " + Util.retonarAspas(END_CEP, true) + ", " +
                         "      END_UF = " + Util.retonarAspas(END_UF, true) + ", " +
                         "      END_STEXCLUIDO = " + ((END_STEXCLUIDO == true) ? "1" : "0") + 
                         " WHERE ENDERECO_ID =  " + ENDERECO_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Endereco(string ENDERECO_ID)
        {
            string sql = "DELETE FROM ENDERECO WHERE ENDERECO_ID = " + ENDERECO_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}